﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace BDSim
{
    public class CAccessCalDLL
    {
        //////////////////////////////////////////////////////////////////////////
        //函数名称：StationAccess
        //函数功能：卫星相对地面站可见性计算
        //输入：
        //			(1)UseECFPos		用户在地固坐标系中的位置X,Y,Z（单位：m）
        //			(2)SatECFPos		卫星在地固坐标系中的位置X,Y,Z（单位：m）
        //			(3)EleLim			截止仰角（Deg）
        //          (4)AziLim           截止方位角（Deg）
        //输出：
        //          (1)Ele：高度角（度）
        //          (2)Azi:方位角（度）
        //返回值：
        //			0				不可见
        //         -1               用户或卫星输入有问题
        //			1				可见
        //其他说明：
        //        (1)UsePos和SatPos中的速度一般用不到，计算中可置为0
        //        (2)在计算北极点高度角方位角时，程序默认用户点经纬为0Deg和90Deg
        //////////////////////////////////////////////////////////////////////////
        [DllImport("CAccessCalDLL.dll", EntryPoint = "StationAccess", CallingConvention = CallingConvention.Cdecl)]
        public static extern int StationAccess(NodePosVel UseECFPos, NodePosVel SatECFPos, ECFtype ECFname, double EleLim, out double Ele, out double Azi);



        //////////////////////////////////////////////////////////////////////////
        //函数名称：SatelliteAccess
        //函数功能：地面站相对卫星可见性计算
        //输入：
        //			(1)UseECIPos		用户在惯性坐标系中的位置X,Y,Z（单位：m）
        //			(2)SatECIPos		卫星在惯性坐标系中的位置X,Y,Z（单位：m）
        //			(3)EleLim			截止仰角（Deg）
        //          (4)AziLim           截止方位角（Deg）
        //输出：
        //        (1)Ele：高度角（度）
        //        (2)Azi:方位角 （度）
        //返回值：
        //			0				不可见
        //         -1               用户或卫星输入有问题
        //			1				可见
        //其他说明：
        //        (1)UsePos和SatPos中的速度一般用不到，计算中可置为0
        //////////////////////////////////////////////////////////////////////////
        //[DllImport("CAccessCalDLL.dll", EntryPoint = "Access", CallingConvention = CallingConvention.Cdecl)]
        //public static extern int SatelliteAccess(NodePosVel UseECIPos, NodePosVel SatECIPos,AttitudeInfo SatAttitude,AntennaMsg AntennaParam, double EleLim, double *Ele,  double *Azi);

    }
}
